s40723210 cd2020

  • Home
    • Site Map
    • reveal
    • blog
  • Weeks
    • Week1-5
      • OBS Streaming
    • Week6-9
      • Article impression
    • Week10-14
      • SSH setting
    • Week15-18
    • Weeks Meeting
  • 期末報告
  • Notes
    • Linux 指令
    • vi 與 vim 的指令整理
    • Q&A
  • Assignments
    • assignment1
      • Random grouping
      • Portable system
      • Four wheel car
    • assignment2
      • DigitalProductCollaboration
      • EngineeringProductDesign
      • MechanicalDesignProcess
      • Keyboard control car
    • assignment3
      • MSModelingAndTFApproaches
      • MechatronicDesignCases
      • MechaFutureAndChallenges
      • MechaEducFutureNeed
    • Final project
      • Car gripper Implement
  • CoppeliaSim
    • BubbleRob tutorial
    • Line following BubbleRob
    • External controller tutorial
    • Simulation
    • Simulation dialog
  • Webots Tutorial
    • User Interface
    • Scene Tree
assignment1 << Previous Next >> Portable system

Random grouping

請描述如何針對該課程進行有效的隨機分組,或者隨機進行點名?

測試程式(點選程式連結再貼上即可):

抽查的python程式

如果要使用python來進行亂數分組抽查的話,可以導入random來從列表中隨機抽出所需要的n個不同元素,如下面的程式執行之後,就可以亂數抽出4位。

import random 

group = [4, 10, 12, 25, 32, 34, 38, 45, 50] 

team = random.sample(group, 4) 
print (team)

再來是要讀取網頁資料的話,就要導入requests,使用get請求即可直接下載,例如member = requests.get("網址"),再用print(member.text)就可以印出來了如下。

import requests

web = "https://mdecourse.github.io/cd2020/downloads/2b_group_list.txt"

member = requests.get(web)

print(member.text)

如果使用讀取出的資料,還是無法使用的,因為member.text的性質是str字串,所以我就要將它變回原本的list列表,才可以進行亂數分組,改這個非常的簡單如下。

x = eval(member.text)

最後我整理出來的程式,雖然沒有老師這麼精美,但是也是可以進行亂數分組的抽查的,如果要改抽查人數,改y = random.sample(i,2)的數字即可。

最終程式碼

程式碼連結:抽查程式.py

import requests
import random
  
web = "https://mdecourse.github.io/cd2020/downloads/2b_group_list.txt"
member = requests.get(web)
#print(memder.text)
x=0
for i in eval(member.text):
    y = random.sample(i,2)
    x+=1
    print("group"+ str(x))
    print(y)

亂數分組的的python程式

一開始先從網頁上抓人員,這次跟上面的不太一樣,抓出來的本來就是str字串,所以必須把每個學號轉變為list列表,直接將f.text加上 .split() 來轉換,完成之後就可以使用,random.shuffle()來將整個順序打亂,再來設定一共要分幾組,再使用while迴圈來判斷每一組要有幾個人,使用if判斷是來中斷迴圈,len()是指一共有幾個數量的意思,要加組別的話就要再多寫一列,接著使用for 迴圈來從,剛剛算好的每組人數,例如:13、12、12、12,再使用一個for迴圈,來一個一個配置組人員,這時候直接使用迭代iter()的next(),來抓人員這樣子就不會重複了,最後再加上一些說明、分格、標題,就可以開始進行亂數分組了。

最終程式碼

程式碼連結:亂數分組.py

import requests
import random

web = "http://s1.mde.nfu.edu.tw:8000/?semester=1082&courseno=0780"
f = requests.get(web)
#print(type(f.text))
x = f.text.split()
#print(len(x))
#print(x)
random.shuffle(x)

group1,group2,group3,group4 = 0,0,0,0
while 1==1:
    group1 += 1
    if (group1+group2+group3+group4) == len(x):
        break
    group2 += 1
    if (group1+group2+group3+group4) == len(x):
        break
    group3 += 1
    if (group1+group2+group3+group4) == len(x):
        break
    group4 += 1
    if (group1+group2+group3+group4) == len(x):
        break
#print(group1,group2,group3,group4)

print("全班人數有"+str(len(x))+"人")
print("="*20)
grp_num = group1,group2,group3,group4
a = iter(x)
team = 0
for i in grp_num:
    team += 1
    print("group"+str(team)+" 共 "+str(i)+" 人")
    for g in range(i):
        print(next(a))
    print("-" * 20)


assignment1 << Previous Next >> Portable system

Copyright © All rights reserved | This template is made with by Colorlib